home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
fb386
/
sai64
/
sa64main.bas
< prev
next >
Wrap
BASIC Source File
|
1993-11-30
|
11KB
|
275 lines
1 '*******変数表(一部)********
2 '『LOOP%,LOOP2%,LOOP3%,LOOP$-各階層のル-プ用』『PL-プレイヤ-ナンバ』 『PLA,SZE$,LEV$,PON$-モ-ド選択用』『OV,BL,LE,RI-上下左右』 『T1,T2,TC-総合得点』『KT1,KT2,KT3-コンピュ-タの思考用仮合計』
3 '『STA-ステ-ジ』『ME-サイコロの目』『PL-プレイヤ-1,2』 『P1T,P2T-プレイヤ-1,2の勝った回数』『PUS-コンピュ-タがパワ-を使用 するかどうか(0なら使用)』
10 CLS 0:CONSOLE 23,2:DIM XY(10,10):PON$="ON":PZOUKA1%=1:PZOUKA2%=1
20 LOCATE 30,1:PRINT"****ル-ル 説明****"
30 LOCATE 10,3:PRINT"さいころ を 振る・・・パッド の Aボタン を 押す"
40 LOCATE 10,4:PRINT"POWER ON ・・・A と B を 一緒 に 押す"
50 LOCATE 10,5:PRINT"座標 の 移動 ・・・パッド の 方向キ- で 移動"
60 LOCATE 10,6:PRINT"空いている場所ならどこでも置ける"
70 LOCATE 30,8:PRINT"****得点 説明****"
80 LOCATE 10,10:PRINT"隣が1つ違いの数字1つに付き+1点(1と6は" "1つ違いとする)"
90 LOCATE 10,11:PRINT"隣が同じ数字1つに付き-1点"
100 LOCATE 10,12:PRINT"隣に同じ或いは1つ違いの数字が無い時は-3点"
110 LOCATE 30,14:PRINT"****POWER 使用****"
120 LOCATE 10,16:PRINT"消費点数・・・(POWER-1)*2 (但しPOWERが1の時は" "1点消費)"
130 LOCATE 30,17:PRINT"それまでの点数から引かれる"
140 LOCATE 10,18:PRINT"得点 ・・・その時得た点数*POWER"
150 LOCATE 45,20:PRINT"リタ-ンキ-を押して下さい"
160 LOOP$="A":WHILE LOOP$="A":LOCATE 71,20:LOOP$=INPUT$(1):WEND
170 LOCATE 30,1: PRINT"NORMAL OR STAZE":SZE$=""
180 CLS 0
190 LOOP%=1:WHILE LOOP%
200 LOCATE 10,2:PRINT"INPUT (N) OR (S)"
210 SZE$=INPUT$(1)
220 IF SZE$="N" OR SZE$="S" THEN LOOP%=0
230 WEND
240 IF SZE$="S" THEN LOOP%=1
250 LOOP%=LOOP%:WHILE LOOP%
260 LOCATE 30,3:PRINT"V-EASY OR EASY OR NORMAL OR HARD":LEV$=""
270 LOOP2%=1:WHILE LOOP2%
280 LOCATE 10,4:PRINT"INPUT (V) OR (E) OR (N) OR (H)"
290 LEV$=INPUT$(1)
300 IF LEV$="V" OR LEV$="E" OR LEV$="N" OR LEV$="H" THEN LOOP2%=0
310 WEND
320 TC=0:T1=0:T2=0:LOOP%=0
330 IF LEV$="V" THEN GOSUB *STAZEA ELSE GOSUB *STAZEB:SYSTEM:END
340 WEND
350 CLS 0:LOCATE 30,2
360 PRINT"1 PLAYER OR 2 PLAYER"
370 PLA=0:TC=0
380 LOOP%=1 :WHILE LOOP%
390 LOCATE 10,3 :PRINT"INPUT (1) OR (2)"
400 INPUT PLA
410 IF PLA=1 OR PLA=2 THEN LOOP%=0
420 WEND
430 LOOP%=1:WHILE LOOP%
440 LOCATE 10,5:PRINT"何本勝負(1~7)":INPUT MEN
450 LOCATE 30,6:PRINT"SELECT STILE"
460 LOCATE 10,7:PRINT"INPUT (1)~(17)+(18)~(38)"
470 LOCATE 1,8:DIM STIN(9)
480 FOR STIL=1 TO MEN:PRINT STIL"本目"
490 LOOP2%=1:WHILE LOOP2%
500 INPUT STIN(STIL)
510 IF STIN(STIL)>0 OR STIN(STIL)<39 THEN LOOP2%=0
520 WEND
530 NEXT STIL:LOOP%=0:WEND
540 GOSUB *PPPLAY
550 SYSTEM: END
560 *MAIN
570 OPEN "I",#1,"S64DAT.dat"
580 GYOU%=STA*40
590 INPUT #1 ,GYO%
600 IF GYOU%>GYO% OR GYOU%<GYO% THEN GOTO 590
610 INPUT#1,STA,M,XY(0,0),XY(1,0),XY(2,0),XY(3,0),XY(4,0),XY(5,0),XY(6,0), XY(7,0),XY(8,0),XY(9,0),XY(0,1),XY(1,1),XY(2,1),XY(3,1),XY(4,1), XY(5,1),XY(6,1),XY(7,1),XY(8,1),XY(9,1),XY(0,2),XY(1,2),XY(2,2), XY(3,2),XY(4,2)
620 INPUT#1,GYO%,XY(5,2),XY(6,2),XY(7,2),XY(8,2),XY(9,2),XY(0,3),XY(1,3), XY(2,3),XY(3,3),XY(4,3),XY(5,3),XY(6,3),XY(7,3),XY(8,3),XY(9,3), XY(0,4),XY(1,4),XY(2,4),XY(3,4),XY(4,4),XY(5,4),XY(6,4),XY(7,4), XY(8,4),XY(9,4)
630 INPUT#1,GYO%,XY(0,5),XY(1,5),XY(2,5),XY(3,5),XY(4,5),XY(5,5),XY(6,5), XY(7,5),XY(8,5),XY(9,5),XY(0,6),XY(1,6),XY(2,6),XY(3,6),XY(4,6), XY(5,6),XY(6,6),XY(7,6),XY(8,6),XY(9,6),XY(0,7),XY(1,7),XY(2,7), XY(3,7),XY(4,7)
640 INPUT#1,GYO%,XY(5,7),XY(6,7),XY(7,7),XY(8,7),XY(9,7),XY(0,8),XY(1,8), XY(2,8),XY(3,8),XY(4,8),XY(5,8),XY(6,8),XY(7,8),XY(8,8),XY(9,8), XY(0,9),XY(1,9),XY(2,9),XY(3,9),XY(4,9),XY(5,9),XY(6,9),XY(7,9), XY(8,9),XY(9,9)
650 CLOSE#1
660 CLS 1
670 FOR Y=0 TO 9
680 FOR X=0 TO 9
690 IF XY(X,Y)=12 THEN LOCATE 2*X+6,Y+8:PRINT "*"
700 NEXT X
710 NEXT Y
720 SYMBOL(64,148),"1 2 3 4 5 6 7 8",1,1,2
730 SYMBOL(48,173),"A",1,1,2
740 FOR N=66 TO 72 :C$=CHR$(N):SYMBOL STEP(0,19),C$,1,1,2:NEXT N
750 FOR X=60 TO 188 STEP 16
760 LINE(X,169)-(X,321),PSET,2
770 NEXT X
780 FOR Y=169 TO 321 STEP 19
790 LINE(60,Y)-(188,Y),PSET,2
800 NEXT Y
810 COLOR 4: LOCATE 40,7:PRINT"STILE "STA:COLOR 7
820 T1=0:T2=0:PW=0:POWER=0
830 N=0:WHILE N<M
840 IF PON$="ON" THEN PW=PW+PZOUKA1%:LOCATE 60,5:PRINT"POWER="PW
850 LOCATE 5,23:PRINT"PLAYER 1"
860 FOR LOOP%=0 TO 3000 :NEXT LOOP%
870 CLS 1
880 LOOP%=1:WHILE LOOP% :PT=PTRIG(1)
890 IF PT=1 THEN LOOP%=0
900 IF PON$="ON" THEN IF PT=3 THEN T1=T1-PW*2+2:POWER=PW:LOOP%=0
910 IF PT=1 THEN SYMBOL(480,110),"POWER ON",1,1,0
920 IF PON$="ON" THEN IF PT=3 THEN SYMBOL(480,110),"POWER ON",1,1,6
930 WEND
940 PL=1
950 GOSUB *RANSUU
960 GOSUB *HANTEI1
970 GOSUB *HANTEI2
980 LOCATE 60,1:PRINT "PLAYER1=" T1
990 IF PON$="ON" THEN PW=PW+PZOUKA2%: LOCATE 60,5:PRINT"POWER="PW
1000 LOCATE 5,23:PRINT"PLAYER 2"
1010 CLS 1
1020 IF PLA=1 THEN PT=0:PL=2:KAI=0:LOOP%=0 ELSE LOOP%=1
1030 LOOP%=LOOP%:WHILE LOOP%
1040 LOOP2%=1:WHILE LOOP2%:PT=PTRIG(2)
1050 IF PT=1 THEN LOOP2%=0
1060 IF PON$="ON" THEN IF PT=3 THEN T2=T2-PW*2+2:POWER=PW:LOOP2%=0
1070 IF PT=1 THEN SYMBOL(480,110),"POWER ON",1,1,0
1080 IF PON$="ON" THEN IF PT=3 THEN SYMBOL(480,110),"POWER ON",1,1,6
1090 WEND
1100 PL=2
1110 GOSUB *RANSUU
1120 GOSUB *HANTEI1
1130 GOSUB *HANTEI2
1140 LOCATE 60,3:PRINT "PLAYER2=" T2
1150 FOR LOOP2%=0 TO 3000 :NEXT LOOP2%:LOOP%=0
1160 WEND
1170 IF PLA=2 THEN LOOP%=0 ELSE LOOP%=1
1180 LOOP%=LOOP%:WHILE LOOP%
1190 KT=0:KX=0:KY=0:PUS=0
1200 IF PON$="ON" THEN LOOP2%=1 ELSE LOOP2%=0
1210 LOOP2%=LOOP2%:WHILE LOOP2%
1220 IF TC-T1>2*PW+4*M-4*N-2 THEN PUS=1
1230 IF TC-T1>0 AND N=M-1 THEN PUS=1
1240 IF PW<3 THEN PUS=1
1250 IF PUS ELSE GOSUB *SIYOU
1260 KT=0
1270 IF PUS=0 THEN POWER=PW:PT=3:SYMBOL(480,110),"POWER ON",1,1,6
1280 IF PUS=1 THEN SYMBOL(480,110),"POWER ON",1,1,0
1290 IF PUS=0 THEN TC=TC-PW*2+2
1300 LOOP2%=0
1310 WEND:LOOP%=0
1320 WEND
1330 RANDOMIZE TIME
1340 ME=INT(RND*6+1):
1350 LOCATE 60,23 :PRINT ME
1360 FOR X=1 TO 8 STEP 1
1370 FOR Y=1 TO 8 STEP 1
1380 IF XY(X,Y)=0 THEN GOSUB *HANTEI1
1390 IF KAI=0 AND XY(X,Y)=0 THEN KT=T:KX=X:KY=Y:KAI=1
1400 IF XY(X,Y)=0 AND T>KT THEN KT=T:KX=X:KY=Y
1410 NEXT Y
1420 NEXT X
1430 X=KX:Y=KY:T=KT
1440 GOSUB *HANTEI2
1450 TC=TC+T
1460 LOCATE 60,3:PRINT "PLAYER2="TC
1470 N=N+1
1480 WEND
1490 IF LEV$="V" THEN RETURN 2280
1500 IF LEV$="E" THEN RETURN 2560
1510 IF LEV$="N" THEN RETURN 2630
1520 IF LEV$="H" THEN RETURN 2700
1530 RETURN 2420
1540 *RANSUU
1550 RANDOMIZE TIME
1560 ME=INT(RND*6+1)
1570 LOCATE 50,23: PRINT"サイコロの目"ME
1580 LOCATE 10,1:PRINT"INPUT X,Y":X=5:Y=5:PPT=PT
1590 FOR LOOP%=0 TO 2000 :NEXT LOOP%
1600 LOOP%=1:WHILE LOOP%
1610 Y$=CHR$(Y+64)
1620 LOCATE 20,1:PRINT"座標 ("X","Y$")"
1630 IF PL=1 AND PTRIG(1)=2 THEN LOOP%=0
1640 IF PL=2 AND PTRIG(2)=2 THEN LOOP%=0
1650 IF PL=1 THEN AD=PAD(1) ELSE AD=PAD(2)
1660 IF AD=1 AND Y>1 THEN Y=Y-1
1670 IF AD=2 AND Y>1 AND X<8 THEN Y=Y-1:X=X+1
1680 IF AD=8 AND Y>1 AND X>1 THEN Y=Y-1:X=X-1
1690 IF AD=3 AND X<8 THEN X=X+1
1700 IF AD=7 AND X>1 THEN X=X-1
1710 IF AD=4 AND X<8 AND Y<8 THEN X=X+1:Y=Y+1
1720 IF AD=6 AND X>1 AND Y<8 THEN X=X-1:Y=Y+1
1730 IF AD=5 AND Y<8 THEN Y=Y+1
1740 FOR LOOP2%=0 TO 450 :NEXT LOOP2%
1750 IF XY(X,Y)>0 THEN LOOP%=1
1760 WEND
1770 RETURN
1780 *HANTEI1
1790 T=0:K=0
1800 LE=XY(X-1,Y):RI=XY(X+1,Y):OV=XY(X,Y-1):BL=XY(X,Y+1)
1810 IF LE=ME THEN T=T-1 ELSE K=K-1
1820 IF RI=ME THEN T=T-1 ELSE K=K-1
1830 IF OV=ME THEN T=T-1 ELSE K=K-1
1840 IF BL=ME THEN T=T-1 ELSE K=K-1
1850 LEF=ABS(LE-ME):RIG=ABS(RI-ME)
1860 OVE=ABS(OV-ME):BLO=ABS(BL-ME)
1870 IF (LEF=1 OR LEF=5)AND(LE>0) THEN T=T+1 ELSE K=K-1
1880 IF (RIG=1 OR RIG=5)AND(RI>0) THEN T=T+1 ELSE K=K-1
1890 IF (OVE=1 OR OVE=5)AND(OV>0) THEN T=T+1 ELSE K=K-1
1900 IF (BLO=1 OR BLO=5)AND(BL>0) THEN T=T+1 ELSE K=K-1
1910 IF K+8=0 THEN T=T-3
1920 IF (LE=0 OR LE=12) AND (RI=0 OR RI=12) AND (OV=0 OR OV=12) AND (BL=0 OR BL=12) THEN T=T+3
1930 RETURN
1940 *HANTEI2
1950 XY(X,Y)=ME
1960 LOCATE 2*X+5,Y+8:PRINT ME
1970 IF X=1 THEN XY(9,Y)=ME ELSE IF X=8 THEN XY(0,Y)=ME
1980 IF Y=1 THEN XY(X,9)=ME ELSE IF Y=8 THEN XY(X,0)=ME
1990 IF POWER=0 AND PT=3 THEN T=T-2:PW=0
2000 IF POWER>1 THEN T=T*POWER:PW=0:POWER=0
2010 IF POWER=1 THEN T=T-1:PW=0:POWER=0
2020 IF PL=1 THEN T1=T1+T ELSE T2=T2+T
2030 RETURN
2040 *SIYOU
2050 KT1=0:KT2=0:KT3=0
2060 FOR ME=1 TO 6 STEP 1
2070 KT=0
2080 FOR X=1 TO 8 STEP 1
2090 FOR Y=1 TO 8 STEP 1
2100 IF XY(X,Y)=0 GOSUB *HANTEI1
2110 IF T>KT THEN KT=T
2120 NEXT Y
2130 NEXT X
2140 IF KT>0 KT1=KT1+1
2150 IF KT>1 KT2=KT2+1
2160 IF KT>2 KT3=KT3+1
2170 NEXT ME
2180 IF KT3>1 AND KT2>3 AND KT1=6 THEN PUS=0 ELSE PUS=1
2190 IF T1-TC>11 AND N>M-6 AND KT3>0 AND KT2>2 THEN PUS=0
2200 IF TC-T1>0 AND KT2=6 THEN PUS=0
2210 IF N=M-1 AND T1-TC>0 AND KT3>1 PUS=0
2220 RETURN
2230 *STAZEA
2240 FOR STA=1 TO 3 STEP 1
2250 PLA=1:TC=-5:IF T1<TC THEN STA=1
2260 IF T1=TC AND STA>1 THEN STA=STA-1
2270 CLS 0:GOSUB *MAIN
2280 NEXT STA
2290 LOCATE 40,9:PRINT "CLEAR"
2300 RETURN
2310 *STAZEB
2320 IF LEV$="E" THEN GOSUB *E
2330 IF LEV$="N" THEN GOSUB *N
2340 IF LEV$="H" THEN GOSUB *H
2350 LOCATE 40,9:PRINT "CLEAR"
2360 RETURN
2370 *PPPLAY
2380 P1T=0:P2T=0
2390 FOR STIL=1 TO MEN
2400 CLS 0
2410 STA=STIN(STIL):GOSUB *MAIN
2420 IF T1>T2 THEN P1T=P1T+1
2430 IF T2>T1 OR TC>T1 THEN P2T=P2T+1
2440 LOCATE 40,9:PRINT"P1 "P1T" 対 P2 "P2T
2450 FOR LOOP%=0 TO 30000 :NEXT LOOP%
2460 IF P2T-P1T>MEN-STIL THEN LOCATE 40,11:PRINT "P2 WIN":STIL=MEN
2470 IF P1T-P2T>MEN-STIL THEN LOCATE 40,11:PRINT "P1 WIN":STIL=MEN
2480 IF P1T=P2T AND MEN=STIL THEN LOCATE 40,11:PRINT"引き分け"
2490 NEXT STIL
2500 RETURN
2510 *E
2520 FOR STA=4 TO 9 STEP 1
2530 TC=0:PLA=1:IF T1<TC THEN STA=4
2540 IF T1=TC AND STA>4 THEN STA=STA-1
2550 CLS 0 :GOSUB *MAIN
2560 NEXT STA
2570 RETURN
2580 *N
2590 FOR STA=4 TO 9 STEP 1
2600 TC=10:PLA=1:IF T1<TC THEN STA=STA-1
2610 IF T1=TC AND STA>4 THEN STA=STA-1
2620 CLS 0:GOSUB *MAIN
2630 NEXT STA
2640 RETURN
2650 *H
2660 FOR STA=4 TO 9 STEP 1
2670 TC=20:PLA=1:IF T1<TC THEN STA=STA-1
2680 IF T1=TC AND STA>4 THEN STA=STA-1
2690 CLS 0:GOSUB *MAIN
2700 NEXT STA
2710 RETURN